package com.xgpro.common.dingtalk.service.contact;

import com.alibaba.fastjson.JSONObject;
import com.taobao.api.ApiException;
import com.xgpro.domain.rolemanage.dto.UserDTO;
import com.xgpro.domain.rolemanage.entity.Department;
import com.xgpro.domain.talentintroduction.entity.User;

import java.text.ParseException;
import java.util.List;

public interface DDUserService {


	/**1.创建用户
	 * @desc ：
	 *
	 * @param accessToken
	 * @param user
	 * @return
	 * @throws Exception String
	 */
	public String createUser(String accessToken, User user) throws Exception ;


	/** 2.根据userid获取成员详情
	 * @desc ：获取成员详情
	 *   参考文档： https://open-doc.dingtalk.com/docs/doc.htm?spm=0.0.0.0.jjSfQQ&treeId=371&articleId=106816&docType=1#s0
	 * @param accessToken
	 * @param userId void
	 * @throws Exception
	 */
	public UserDTO getUser(String accessToken, String userId) throws Exception ;

	/**
	 * 获取公司所有部门ID
	 * @param accessToken 调用接口凭证
	 * @return

	 */
	public List<Department> getAllDepertmentId(String accessToken) throws Exception;

	/** 3.获取部门成员
	 * @desc ：
	 *
	 * @param accessToken
	 * @param departmentId
	 * @throws Exception void
	 */
	public void getDepartmentUser(String accessToken, Long departmentId) throws Exception ;

	/** 4.获取部门成员（详情）
	 * @desc ：
	 *
	 * @param accessToken
	 * @param departmentId
	 * @throws Exception void
	 */
	public List<User> getDepartmentUserDetail(String accessToken, Long departmentId,Long offset,Long size) throws Exception ;

	/** 5.根据免登授权码Code查询免登用户userId
	 * @desc ：钉钉服务器返回的用户信息为：
	 * userid	员工在企业内的UserID
	 * deviceId	手机设备号,由钉钉在安装时随机产生
	 * is_sys	是否是管理员
	 * sys_level	级别，0：非管理员 1：超级管理员（主管理员） 2：普通管理员（子管理员） 100：老板
	 *
	 * @param accessToken
	 * @param code
	 * @throws Exception void
	 */
	public JSONObject getUserInfo(String accessToken, String code) throws Exception ;


	Long getCompayEmpCount(String accessToken,Long ifActive) throws ApiException;

	/**
	 * 获取部门用户列表
	 * @param accessToken
	 * @param departmentId
	 * @return
	 */
	List<String> getUserIds(String accessToken,String departmentId) throws ApiException;

	/**
	 * 获取钉钉花名册信息
	 * @param accessToken
	 * @param userIds
	 * @return
	 */
	List<UserDTO> getSmartWorkUserList(String accessToken, String userIds) throws ApiException, ParseException;

}
